package 方法引用;

/*
需求：
1.定义一个接口(Printable):里面定义一个抽象方法：void printString(String s);
2.定义一个测试类(PrintableDemo):在测试类中提供两个方法
       一个方法是：usePrintable(Printable p)
       一个方法是主方法，在主方法中调用usePrintable方法
 */
public class PrintableDemo {
    public static void main(String[] args) {
//        //在主方法中用Lambda表达式调用方法
//        usePrintable((String s)->{
//            //拿到下面方法的字符串数据在控制台输出
//            System.out.println(s);
        // });
        // 优化  可以根据接口中的方法里面形参定义的String推导的可省略
        usePrintable(s -> System.out.println(s));

//        System.out.println("爱java");
       //方法引用符： ::   隐含了将前面的参数给了println方法
        usePrintable(System.out::println);//直接将s这个参数传到了println方法，动作并没有看到

        //可推导的就是可省略的

    }

    public static void usePrintable(Printable p) {
        //在方法中调用接口中的方法
        p.printString("爱java");
    }
}
